package dao;

import java.util.List;

import hbt.HibernateDAO;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import bean.DepositoBean;
import bean.OrdenCompraBean;
import bean.ProveedorBean;

public class OrdenCompraDao {

	public void altaOrdenCompra(OrdenCompraBean OC)
	{
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		
		for(int i=0;i<OC.getItemes().size();i++)
		{
			s.saveOrUpdate(OC.getItemes().get(i).getProducto());
			s.persist(OC.getItemes().get(i));
		}
		s.persist(OC);
		t.commit();
	}
	
	
	/*
	 * Agregado por PS.
	 */
	
	public static void actualizarOrdenCompra(OrdenCompraBean OC)
	{
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		
		s.save(OC);
		t.commit();
	}
	public static List<OrdenCompraBean>getOrdenesCompraProveedorDepositoPendientes(ProveedorBean proveedor,DepositoBean deposito)
	{
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		Query query=s.createQuery("FROM OrdenCompraBean o WHERE o.proveedores.idProveedor=:id_proveedor AND o.destino.codigo=:id_deposito AND estado='pendiente'");
		query.setParameter("id_proveedor",proveedor.getIdProveedor());
		query.setParameter("id_deposito", deposito.getCodigo());
		@SuppressWarnings("unchecked")
		List<OrdenCompraBean>list=(List<OrdenCompraBean>) query.list();
		
		t.commit();
		
		return list;
		
	}
}
